package xml;
import java.io.File;
import java.io.FileWriter;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import dominio.*;


public class xmlService {
	static Document doc;
	private String  idProveedor,origen,marca,paisori,codprop,tipo,codskf;
	private float precio;
	private int  id_item,stock;
	private boolean  vigencia;
	private Date fecha;
	
	public List <ListaPrecios> leerXML(){
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder;
		
		Proveedor p;
		//ListaPrecios lp =null;
		List <ListaPrecios>lp = new ArrayList();
		List <Item> items   = new ArrayList();
		List <Rodamiento> rodamiento = new ArrayList();;
		
		File folder = new File("listas_precios");
		File[] listOfFiles = folder.listFiles();//obtiene los nombres de los archivos de la lista_precios
		
		try {
			for (int i = 0; i < listOfFiles.length; i++) {
			      if (listOfFiles[i].isFile()) {
			    	  File file = new File("listas_precios/"+listOfFiles[i].getName());
			 
						builder = factory.newDocumentBuilder();
						doc = builder.parse(file);	
						NodeList nodoPr = doc.getElementsByTagName("Proveedor");
						idProveedor=  nodoPr.item(0).getChildNodes().item(0).getNodeValue();
						NodeList nodoVigencia = doc.getElementsByTagName("Vigencia");
						vigencia = Boolean.parseBoolean(nodoVigencia.item(0).getChildNodes().item(0).getNodeValue());
						NodeList nodofecha = doc.getElementsByTagName("Fecha");
						DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
						fecha =  df.parse(nodofecha.item(0).getChildNodes().item(0).getNodeValue());
						NodeList nodosItem  = doc.getElementsByTagName("Item");

					  for(int j = 0; j < nodosItem.getLength(); j++){
						  id_item = Integer.parseInt(nodosItem.item(j).getAttributes().item(0).getNodeValue());
						  origen = nodosItem.item(j).getChildNodes().item(1).getChildNodes().item(0).getNodeValue();
						  marca = nodosItem.item(j).getChildNodes().item(3).getChildNodes().item(0).getNodeValue();
						  paisori = nodosItem.item(j).getChildNodes().item(5).getChildNodes().item(0).getNodeValue();
						  codprop = nodosItem.item(j).getChildNodes().item(7).getChildNodes().item(0).getNodeValue();
						  codskf = nodosItem.item(j).getChildNodes().item(9).getChildNodes().item(0).getNodeValue();
						  tipo = nodosItem.item(j).getChildNodes().item(11).getChildNodes().item(0).getNodeValue();
						  stock = Integer.parseInt(nodosItem.item(j).getChildNodes().item(13).getChildNodes().item(0).getNodeValue());
						  precio= Float.valueOf(nodosItem.item(j).getChildNodes().item(15).getChildNodes().item(0).getNodeValue());
						  items.add(new Item(id_item,new Rodamiento(origen,marca,paisori,codprop,codskf,tipo,stock),precio,stock));
					  	 }
					      lp.add(new ListaPrecios(items,fecha,vigencia,idProveedor));
						}
					}
				} catch (Exception e) {
				 e.printStackTrace();
		}
	 return lp;// devuelvo las listas de precio
		  
	}

}
